The Fresh Code

[번역] 프로그래머들을 위한 프롬프트 엔지니어링 플레이북

  • AI 코딩 어시스턴트는 매우 강력함
    • 하지만 사용자가 제공하는 프롬프트의 품질에 따라 성능이 크게 달라진다.
  • 이 글은 효과적인 프롬프트 엔지니어링을 통해 보다 정확하고 창의적인 코드를 얻기 위한 지침서이다.

효과적인 프롬프트 작성의 기본 원칙


1. 풍부한 컨텍스트를 제공하라

  • 내가 사용하는 언어, 프레임워크, 라이브러리에 대한 세부사항을 명시하라.
  • 오류를 물어보는 경우 정확한 오류 메세지를 제공하라.

2. 명확한 목표 또는 질문 제시

  • 구체적이고 명확한 질문이 명확한 답을 유도한다.
  • 만약 당신이 디버깅을 한다면, 실제 기대하는 동작과 실제 동작을 비교하는 식으로 표현하라.

3. 복잡한 작업 세분화

  • 원하는 기능을 한번에 요청하지 말고, 점진적으로 단계적으로 나눠 요청하라.

4. 예시와 예상 동작 포함

  • Few-shot prompting : 예제를 통해 원하는 결과를 명확히 전달한다.

5. 역할 설정(페르소나 사용)

  • AI가 특정 역할(선임 개발자나 성능 전문가)로 행동하게 하여 더 수준 높은 답변을 유도하라.

6. 반복적으로 다듬기

  • 첫 답변이 완벽하지 않다고 생각된다면, 후속 질문으로 정밀하게 수정하길 요구하라

7. 코드의 일관성과 명확성 유지

  • AI가 제안할 때 일관되고 명확한 코드와 주석이 AI의 성능에 크게 도움이 된다.

각 상황별 프롬프트 패턴


디버깅

1. 명확한 문제 설명

정확한 오류 메시지와 원하는 동작을 상세하게 설명하라.

2. 단계별 접근

코드 실행 과정을 한 단계씩 AI에 설명 요청하여 논리적 오류를 발견하라

3. 최소한의 재현 가능 예제

작은 코드 조각으로 문제를 단순화하여 제공하라

4. 집중적인 질문과 후속 조치

명확한 질문과 추가 설명을 요구하여 더 명확한 해결책을 확보하라

리팩토링 및 최적화

1. 명확한 목표 설정

가독성, 복잡성 감소, 성능 향상 등 명시적으로 목적을 제시하라

2. 필요한 코드 컨텍스트 제공

코드 스니펫 및 환경(언어, 버전 등) 명시

3. 설명 요구

AI가 현재 코드를 변경한 이유와 개선사항을 설명하게 하라

4. 고급 역할 설정 활용

선배 개발자 역할을 AI에게 맡기면 보다 수준 높은 리팩토링 가능

신규 기능 구현

1. 상위 레벨에서 시작, 세부 사항으로

큰 작업을 작은 단계로 나누어 순차적 구현 요청

2. 관련 컨텍스트 또는 참조 코드 제공

기존 코드 스타일, 아키텍처 또는 라이브러리를 제시하여 일관성 유지

3. 주석과 TODO로 프롬프트 삽입

IDE 내에서 자연어 주석으로 AI가 자동 완성 하도록 유도

4. 입력/출력 예시 제공

기대하는 결과를 미리 제시하여 AI 구현 방향을 명확하게 제시하라

5. 첫 결과가 부정확할 경우 세부 조건을 추가하여 다시 요청

세부 요구사항을 명확히 하여 원하는 방향으로 수정하라

프롬프트 작성 안티 패턴


  • 모호한 프롬프트: 구체적이고 상세한 정보를 추가로 제공
  • 과부하된 프롬프: 여러 작업을 나눠 한 번에 하나씩 명료하게 제시
  • 명확하지 않은 질문: AI에게 원하는 작업이나 질문을 명확히 전달
  • 성공 기준이 불명확: 명확한 성공 지표나 기준을 제시
  • AI 질문은 무시: AI의 추가 정보 요청에 즉각 대응하여 오해 방지
  • 일관되지 않은 스타일: 동일 프롬프트 내에서는 하나의 스타일과 형식을 유지

AI 응답 오류 발생 시 프롬프트 개선 전략

  • AI 응답에서 누락된 요구 사항을 명확히 하여 다시 전달
  • 필요하면 요청을 더 세분화하여 명확성 확보
  • AI가 혼동할 경우 새로운 세션을 시작하여 혼란을 최소화